Beiträge von Dietrich

    Frohe Weihnachten zusammen mit einem kleinen Weihnachtsgruß in FORTH



    Selber machen?

    Kein Problem - einfach das FORTH-Programm in FORTH per Copy-Paste eingeben. Dabei nicht vergessen, den Delay von 300 ms pro Zeile einzustellen.


    Code
    : X-MAS CR 12 0 do
    12 i - spaces I 1+ dup 0 do ." /" loop
    0 do ." \" loop cr
    loop 124 dup 2 0 do
    12 0 do ." ~" loop
    I 1 = 0= if 2 0 do emit loop then
    loop cr 12 spaces 2 0 do ." |"
    loop 12 spaces cr cr ;


    Frohe Weihnachten

    Dietrich

    Zitat

    Hier wie versprochen die Liste der Zero Page Einträge

    2ee vielen Dank. Besonders kritisch sind hier die Zellen, die von den IRQ-Routinen benutzt werden, denn die dürfen auf keinen Fall von anderen Programmen genutzt werden.


    Dietrich

    Zitat

    b.) für die Grafik wollte ich anregen, daß man die ganz einfachen normalen Modes versucht in der Minimalbestückung von RAMs unterzubringen. Also so, daß die Maschine auch mit nur 32kB VideoRAM per Bildschirm zumindest bedienbar ist.

    ThoralfAsmussen : wozu soll das gut sein?


    Dietrich

    Die Erweiterung des JC-][ mit der FGA-Karte und der dazugehörigen Software hat doch etliche Änderungen bei einigen Applikationen nötig gemacht.

    Hier nun das Paket mit den angepassten Programmen, lauffähig unter MOS-65. Dazu einfach die ZOP entpacken und die Programme in Ordner auf der SD kopieren.

    Enthalten sind

    • FORTH Fig-FORTH V1.6, leider noch ziemlich rudimentär, weil MOS-65 derzeit nur eine rudimentäre Schnittstelle zum Dateisystem bietet
    • I2C-UTIL Utility zum ansteuert von Modulen auf dem I2C-Bus
    • SD-EDIT Utility zum Editieren des SD-Karte auf Sectorebene mit ein paar Hilfen zur Analyse der Struktur des Dateisystems
    • DEBUG Debugger zum Testen von Programmen unter MOS-65 mit Breakpoints, Einzelschrittverarbeitung, Manipulation des Speichers und der Prozessorregister und anderem nützlichen Kram. Hier habe ich erstmals MOS-65 überredet, das zu debuggende File von SD an die $3000ff zu laden. Damit ist DEBUG fast voll nutzbar. Ich werde dazu in den nächsten Tagen noch was schreiben und hoffe, dass sich dann die Programmierer unter euch nach vorne trauen....

    Die Programme sind einigermassen, aber nicht extensiv getestet. Bitte berichtet alle Auffälligkeiten hier im Thread oder auf GitHub: MOS-65 Software


    Have Fun

    Dietrich

    Ok, VPU.COM funktioniert auf meinem Monochrommonitor. a funktioniert auch, bei b tut sich nichts. Der Ausstieg mit "1", SPACE, ESC geht, aber die Bildschirmausgabe ist danach innerhalb der Zeilen verschoben ...


    Der fehlende Cursor liegt tatsächlich am fehlenden IRQ. Ich habe da den TAPE_IRQ-Timer abgeschaltet und der wird wohl benutzt. Kaum eingeschaltet, geht es.

    DEBUG geht nun auch in der MOS-65 Version. Ich habe hier mal die Vektoren $1A70..$1A7F ausgegeben. Was mich verwirrt ist der IRQ-Vektor, der auf dem VPU_IRQ F960TAPE_IRQ $ EF63 zeigt. Sollte der nicht auf den VPU_IRQ $F960 zeigen?

    Anyways, ich reiche die MOS-65 Programme im dortigen Thread nach und mache mich ans Aufräumen und Housekeeping


    Dietrich

    PS. Sorry für das schlechte Foto, aber mein iPhone tut sich echt schwer mit dem alten Schirm. In echt sieht das sehr gut aus.

    Mit meinem alten Philips Monochrom-Monitor und dem Composit-Video-Signal ist das Bild einwandfrei.

    Das Testprogramm VPU.COM bringt nur einen leeren Bildschirm mit Cursor.

    Jetzt schau ich mal, ob ich noch einen passenden Farbmonitor finden kann ...


    Unter CPM-65 gibt es mit dem Videotreiber noch ein paar Kollisionen:

    - Cursor nicht sichtbar

    - BASIC und FORTH bringen die Videoausgabe völlig durcheinander

    Der Rest scheint zu laufen. Ich vermute weitere Zeropage-Kollisionen und evtl. noch ein IRQ-Thema...


    Dietrich

    Das erste Bild!

    Kaum macht mans richtig, schon funktionierts. Wenn man beim Booten kein Terminal aktiv hat, erfolgt die Ausgabe auf die VDU - et voilà


    Die Bildqualität ist noch gruselig, weil ich vom Composit VIDEO Ausgang über einen billigen AV2VGA-Adapter auf einen LCD-Monitor gehe, aber das wird auch noch. MOS-65 und CPM-65 funktionieren erstmal normal.


    In diesem Setting bringt das VPU-Testprogramm VPU.COM nur einen schwarzen Bildschirm mit blinkendem Cursor.


    Dietrich

    Nachdem CPM-65 jetzt auf Stand ist, habe ich mir die Videosignale meiner FGC mal mit dem Speicherskop angesehen.



    Gelb ist CSYNC: 15,6 kHz sehen gut aus. Blau ist Composit Video: SYNC ist da, bei Video nur Rauschen. Und so sieht mein Bildschirm auch aus - schwarz.

    Der V9938 wird angesprochen und ich kann das Statusregister auslesen. Interrupts werden erzeugt.


    Leider weis ich nicht, wie der GUT-Zustand in diesem Stadium aussieht. Da warte ich gespannt auf den Testcode von 2ee


    Dietrich

    CPM-65 ist nun auch auf die neue Hardware angepasst - siehe hier CPM-65 V1.2

    Die PS2-Tastatur funktioniert bei mir problemlos, STDOUTDEV hängt allerdings immer noch auf $10, also Serial-Out ...


    Dietrich

    Update: CPM-65 V1.2 ist raus, wie immer in GitHub: CPM-65 für JC-][ V1.2


    Das Update erfordert zwingend die BIOS-ROM V1.1.4


    Die Änderungen betreffen die neue FGC-Karte. Angepasst wurden BOOT.SYS und BIOS. XMODEM nutzt nun zwingend die serielle Schnittstelle. DEBUG wurde besser in die Interrupt-Kette eingehängt.


    Das PS2-Keyboard wird unterstützt. Im Prinzip müsste das ASCII-Keyboard auch laufen - ich kann das aber nicht testen, weil ich keins habe. Vielleicht probiert das ja mal einer aus und berichtet hier.


    Im Anhang das ganze Paket - einfach BOOT.SYS und die Images auf eine mit MKBOOT vorbereitete SD packen und booten.


    Viel Spass

    Dietrich

    Mein Stromverbrauch liegt bei 5,0V bei 0,83A mit einer 65C02 - ich habe allerdings die 7-Segmentanzeige, den 2. VIA und den Soundchip nicht bestückt. ich vermute, dass die Probleme bei der Stromversorgung eher mit der Welligkeit als mit der Spannungslage zu tun haben. Bei guter Stabilisierung - z.Zt. ein Labornetzteil - habe ich keine Probleme.

    Da ein Bild mehr sagt als viele Worte, hier ein Screenshot von heute - alle Eingaben auf der dt. PS2-Tastatur.


    Dietrich

    Nachtrag: mein JC-][ läuft stabil mit PS2-Tastatur, BIOS 1.1.4 und FGC-ROM 0.0.2. Über die serielle Schnittstelle läuft bisher alles, auch CPM-65.


    Wenn ich die PS2-Tastatur aktiviere, wird diese erkannt und genutzt. Die Ausgabe bleibt aber auf der seriellen Schnittstelle. Warum muß ich noch rauskriegen. Damit funktioniert dann MOS-65. CPM-65 läßt sich booten, hängt aber beim Prompt - da muß ich im BIOS nacharbeiten.


    Weiterhin habe ich festgestellt, dass der JC empfindlich auf schlechte Spannungsversorgung reagiert. Durch den erhöhten Strombedarf der FGC war mein Einfachnetzteil nicht mehr stabil genug. Man merkt das am ehesten daran, dass die SD nicht mehr zuverlässig bootet oder auch im Betrieb hängt.


    Ich werde jetzt erstmal CPM-65 wieder ans Laufen bringen und dann widme ich mich der Video-Ausgabe.


    Dietrich

    Mein JC bootet jetzt, erkennt die Grafikkarte und die Tastatur, aber ich habe kein Bild. Die Sync-Signale werden erzeugt, aber kein brauchbares Videosignal. Ich weis im Moment nicht weshalb.

    Die Spannung mit meinem 3A-Netzteil ist 5V, aber für meinen Geschmack etwas zu verrauscht. Ich werde noch ein paar Glättungskondensatoren spendieren. Ich hatte vorher ein billiges Netzteil, das 2A liefern können sollte, aber bei 1,3 A schon auf unter 4,7 V fiel. Das ist zu wenig - die alten MOS Chips sind mit 5 +- 0,25 V spezifiziert und das ist ernst zu nehmen.

    Die Reise geht weiter….

    Dietrich

    Mein JC bootet jetzt, erkennt die Grafikkarte und die Tastatur, aber ich habe kein Bild. Die Sync-Signale werden erzeugt, aber kein brauchbares Videosignal. Ich weis im Moment nicht weshalb.

    Die Spannung mit meinem 3A-Netzteil ist 5V, aber für meinen Geschmack etwas zu verrauscht. Ich werde noch ein paar Glättungskondensatoren spendieren. Ich hatte vorher ein billiges Netzteil, das 2A liefern können sollte, aber bei 1,3 A schon auf unter 4,7 V fiel. Das ist zu wenig - diecalten MOS Chips sind mit 5 +- 0,25 V spezifiziert und das ist ernst zu nehmen.

    Die Reise geht weiter….

    Dietrich

    Zitat
    meine PS2 Tastatur funktioniert leider derzeit auch noch nicht..

    Dietrich bei dir funktioniert Sie tadellos ?

    286Micha , ja, meine PS2 funktioniert. Leider ist das im Moment auch fast das einzige, was auf der FGC läuft. Du kannst die PS2 testen, indem du ohne SD bootest und dann in den Monitor gehst. Dort 100C eingeben und dann gibt der ATMEGA den letzten Tastendruck in HEX aus. Dann wieder Taste drücken und 100C eingeben usw. bis du alle Tasten durchgeklimpert hast.


    Gruß

    Dietrich

    Zitat

    Beim Einsatz von normalen EPROMs gibt es leider auch ein Problem, da ich bei der Platine einfach damals Pin 1 und Pin 27 statt auf +5V versehentlich auf Masse gelegt hatte. Als ich den Patch für die EEPROMs vorgeschlagen hatte, ist mir dann leider entgangen, dass für normale EPROMs Pin 1 (VPP) auch nicht auf Masse, sondern eben +5V liegen muss. Dietrich musste das leider leider für mich ausbaden und den Fehler finden/korrigieren.


    Ich habs rechtzeitig gemerkt - nix passiert.

    Leider habe ich den Fehler von 286Micha auch - also gibt noch mehr zu tun. Meine FGC ist auf K4.

    Die Änderungen im ROM-BIOS sind erheblich und werden mich beim CPM-65 auch noch auf Trab halten. Aber erst muß der JC-][ wieder ordentlich funktionieren....


    Dietrich

    I2C-UTIL - ein Programm zum Ansprechen der I2C-Schnittstelle des JC-][


    Die I2C-Schnittstelle ist weit verbreitet und es gibt eine Menge nützlicher Module dafür. Außerdem läuft die Echtzeituhr des JC-][ über die I2C-Schnittstelle.

    Die I2C-Schnittstelle ist eigentlich ein BUS, d.h. alle Module am I2C-Bus können mit ihrer Adresse selektiv angesprochen werden.

    Leider ist das Schnittstellenprotokoll seriell mit einer Reihe von Eigenheiten, die das Handling etwas umständlich machen. Damit es leichter wird, gibt es nun I2C-UTIL.

    Nach dem Start einfach ein ? eingeben und schon erscheint die Befehlsübersicht



    Einige Befehle werden euch aus anderen Programmen bekannt vorkommen. Die besprechen wir hier nicht.


    Als erstes schauen wir mal nach, was so am I2C-Bus hängt. Der Befehl dazu heißt I, wie Info

    Aha, da gibt es in meinem Fall 2 Devices mit den Adressen $57 und $68. Die $68 habt ihr in jedem Fall auch - das ist die Echtzeituhr.

    Die $57 ist ein serielles EEPROM.


    Schauen wir mal der Uhr aufs Bit

    K und Z sind Spezialbefehl nur für Uhrenbausteine auf $68, aber mit dem G-Befehl können wir in die Register schauen. Wir lassen uns ab Register 0 die ersten 11 Bytes ausgeben und sehen da Sekunden, Minuten, Stunden, Wochentag, Tag, Monat und Jahr. Und dann sehen wir auch die Kennung $65, $02, die 2ee benutzt, um zu erkennen, ob die Uhr gesetzt ist. Wer möchte, kann nun mit S68,2,9 auf Sommerzeit umschalten - aber das ist ja noch etwas hin.


    Mit diesen Kommandos kann man alle Bausteine ansprechen, die 8-Bit Registeradressen haben. EEPROMs brauchen aber 16 Bit-Register. Auch dafür gibt es Befehle, in meinem Fall liegt unter $57 ein 4 kB-EEPROM

    Man kann das EEPROM nun schreiben mit W und Lesen mit R. Zum Datentransfer benutzt man einen Buffer, dessen Adresse im RAM des JC-][ mit B gesetzt wird. Im Bild seht ihr, wie ich den Speicher erst lese und dan aus dem Speicherbereich $4000 Daten ins EEPROM schreibe und diese zur Kontrolle wieder in $8000 auslese und ausgebe.


    Mit diesem kleinen Programm lässt sich schon eine ganze Menge anstellen. Probiert es einfach. Dazu ladet am besten das Image CPM-65.IMG aus der anhängenden ZIP auf eure SD. Alle Quellen findet ihr wie gewohnt auch auf https://github.com/Dietrich-L/CPM-65_for_JUNIOR_COMPUTER_II


    Über Feedback - besonders über gelungene Versuche - freue ich mich immer.


    Dietrich

    Beide Wege führen zu identischen Ergebnissen. MKBOOT.BIN schreibt den Bootsektor neu und tastet die Dateien nicht an. Der Bootprozeß lädt als erstes den Bootsektot und startet das darin enthaltene Programm. Dieses lädt dann BOOT.SYS und startet dieses.

    Jörgs BOOT.SYS für M/OS-65 und mein BOOT.SYS für CPM-65 sind natürlich unterschiedlich, da sie ja unterschiedliche Betriebssysteme starten. Ich verwende eine SD mit 2 Partitionen - eine für MOS-65 und eine für CPM-65. Das Bootprogramm bietet eine Auswahloption, welche Partition gebootet werden soll.


    Dietrich

    Zitat

    nach der Eingabe von "Yes" bei der letzten SD-Partitions-1 Frage,.. ist es denn normal,

    dass da nach 1 Sekunde "fertig" ist... oder dauert es länger, wenn da richtig was formatiert wird..

    und kommt danach sonst eine weitere Anzeige oder Hinweis ?

    Ja, das geht sehr schnell. Es wird ja nur der Sector 0 der jeweiligen Partition neu geschrieben.

    Und ja, es gibt eine Erfolgsmeldung - wenn ich mich richtig entsinne ….


    Dietrich

    286Micha Das Timing der SD-Karte ist hardwaremäßig nicht ganz im Standard. Manche Karten haben damit ein Problem und initialisieren nicht korrekt. Du musst ein paar Karten probieren. Leider habe ich da keine Empfehlung für bestimmte Fabrikate oder Größen. Meine Karten sind 4 und 8 GB - manche gehen, manche nicht … Die,die gehen, gehen allerdings zuverlässig 🤓


    Dietrich

    Es gab analoge Speicherschaltungen für Oszilloskope mit Eimerkettenspeichern. Die sind ja gewissermaßen das analoge Gegenstück der digitalen Schieberegister. Man konnte diese sehr schnell einlesen und dann getaktet langsamer auslesen. Wenn man beim Auslesen das Signal dann auch wieder in den Eimerkettenspeicher eingelesen hat, war das Signal analog quasi gespeichert.

    Hört sich kompliziert an und ist es auch und hat sich folglich nicht durchgesetzt.


    Dietrich

    Gerne. Ich verwende den seitlichen I2C-Anschloß auf der IO-Karte und ein einfaches Patchkabel. 2ee hat die Anschlüsse schon perfekt angeordnet. Wichtig ist natürlich, den DS1307 nicht an I2C-Bus zu haben, da beide Bausteine die gleiche Adresse benutzen und die lässt sich leider nicht ändern.



    Dietrich

    Ich bin nun endlich dazu gekommen, die neue BIOS-Version 1.1.1 zu testen, noch ohne das Floppy/Graphics-Board. Da fehlt mir noch der LS126, der von Reichelt versehentlich als LS136 geliefert wurde. Toller Kundenservice übrigends, Ersatz wurde prompt abgeschickt und kommt morgen.


    Ergebnis: läuft


    Ich kann nun auch bestätigen, dass man am I2C-Port statt der DS1307 ein DS3231-Board betreiben kann. Jörgs Erkennungsroutine 'missbraucht' zwar das Register $08 (= Alarm2 Miutenregister) als Erkennung, ob der Chip initialisiert wurde, aber solange man Alarm2 nicht nutzt, funktioniert das. Ich liebe die DS3231-Boards, weil der Chip temperaturkompensiert ist und sehr viel genauer läuft als der DS1307 und das Board außerdem noch ein 4 kB EEPROM mitbringt, in dem man alles mögliche ablegen kann,


    2ee Toller Job Jörg

    Dietrich


    Zitat

    Da Pin 27 beim EPROM VP (Programmierspannung) ist, hatte ich den Pin auf Masse gelegt

    Alarm! Pin 27 ist A14. Vpp ist Pin 1.

    Warum dein Patch funktioniert hat, ist mir allerdings unklar.


    Dietrich

    Zitat

    Da Pin 27 beim EPROM VP (Programmierspannung) ist, hatte ich den Pin auf Masse gelegt

    Die Standardspannung an Vpp beim 27c256 ist +5V laut Datenblatt. Ein Jumper scheint mir da nicht nötig.

    Dietrich